﻿using System;
using UnityEngine;
using UnityEngine.UI;

// 消息窗口
public class MessageBox: MonoBehaviour {
    public static GameObject sGameObject;   // 游戏物体
    public static Action sOnOK;             // "确定"按钮的回调          
    public static Text sText;               // 消息标签

    /**
     * 唤醒。 
     */
    private void Awake() {
        // 初始化成员
        sGameObject = gameObject;
        sText = gameObject.GetComponentInChildren<Text>();
        gameObject.GetComponentInChildren<Button>().onClick.AddListener(OnOK);

        // 设置遮罩尺寸为屏幕尺寸
        gameObject.GetComponent<RectTransform>().sizeDelta = new Vector2(Screen.width, Screen.height);

        // 隐藏自身
        gameObject.SetActive(false);
    }

    /**
     * "确定"按钮的单击响应方法。
     */
    public void OnOK() {
        // 隐藏自身
        sGameObject.SetActive(false);

        // 调用回调
        sOnOK?.Invoke();
        sOnOK = null;
    }

    /**
     * 显示。
     * @param text  显示的文字
     * @param onOK  回调
     */
    public static void Show(string text, Action onOK = null) {
        sText.text = text;
        sOnOK = onOK;
        sGameObject.SetActive(true);
    }

    /**
     * 更新。
     */
    private void Update() {
        // 如果用户按下回车键，则相当于单击"确定"按钮
        if (Input.GetKeyDown(KeyCode.Return)) {
            this.OnOK();
        }
    }
}
